10 REM GRAFIK-DEMO =================C64 20 REM WRITTEN BY A. MITTELMEYER 30 REM ================================ 130 VB=3 140 GB=8 150 VR=7 151 REM ------------------------------- 155 VF=1 160 GOSUB180:GOSUB200:GOTO1150 180 VH=64*VB+4*VR:GH=64*VB+4*GB 190 VA=256*VH:GA=256*GH:RETURN 200 FORI=828TO1004 201 READA:POKEI,A:NEXT:RETURN 202 DATA120,072,165,001,041,252,133,001 203 DATA104,096,072,165,001,009,003,133 204 DATA001,088,104,096,032,060,003,160 205 DATA000,145,251,200,208,251,230,252 206 DATA202,208,246,240,229,160,000,032 207 DATA207,255,176,222,032,060,003,145 208 DATA251,032,070,003,200,208,240,230 209 DATA252,202,208,235,240,204,160,000 210 DATA032,060,003,177,251,032,070,003 211 DATA032,210,255,200,208,242,230,252 212 DATA202,208,237,096,032,253,174,032 213 DATA235,183,138,032,060,003,160,000 214 DATA145,020,076,070,003,032,253,174 215 DATA032,138,173,032,247,183,032,060 216 DATA003,160,000,177,020,032,070,003 217 DATA168,032,162,179,032,253,174,032 218 DATA139,176,133,073,132,074,165,014 219 DATA076,194,169,032,253,174,032,235 220 DATA183,169,000,056,106,202,016,252 221 DATA160,000,076,060,003,032,199,003 222 DATA017,020,145,020,076,070,003,032 223 DATA199,003,073,255,049,020,076,222 224 DATA003 420 REM ---- GRAFIK AN ---- 430 POKE56576,PEEK(56576)AND252OR(3-VB) 440 POKE53272,16*VR+GB 450 POKE53265,PEEK(53265)OR32:RETURN 470 REM ---- GRAFIK AUS ---- 480 POKE56576,PEEK(56576)AND252OR3 490 POKE53272,21 500 POKE53265,PEEK(53265)AND223:RETURN 520 REM ---- FARBE KLAEREN ---- 530 POKE780,16*VF+HF:POKE781,4 540 POKE251,0:POKE252,VH:SYS848:RETURN 550 REM ---- BILD LOESCHEN ---- 560 POKE780,0:POKE781,32 570 POKE251,0:POKE252,GH:SYS848:RETURN 580 REM ---- GRAFIK LADEN ---- 590 OPEN8,8,8,FI$+",P,R":POKE781,8 600 SYS65478:GETA$:GETA$:POKE251,0 610 IFFG=0THEN630 620 POKE252,VH:POKE781,4:SYS865 630 POKE252,GH:POKE781,32:SYS865 640 SYS65484:CLOSE8:RETURN 645 REM ---- GRAFIK SAVEN ---- 650 OPEN8,8,8,FI$+",P,W":POKE781,8 660 SYS65481:PRINTCHR$(0);:POKE251,0 670 IFFG=0THENPRINT" ";:GOTO700 680 PRINTCHR$(28);:POKE252,VH:POKE781,4 690 SYS890 700 POKE252,GH:POKE781,32:SYS890:GOTO640 710 REM ---- SPEICHERZUGRIFF ---- 720 REM I=SYS912,A,I:REM POKEA,I 730 REM SYS929,A,I:REM I=PEEK(A) 750 REM ---- PIXEL SETZEN ---- 760 SN=INT(X/8):ZN=INT(Y/8) 770 IFFA=1THENSYS912,40*ZN+SN+VA,16*VF+HF 780 AD=312*ZN+Y+8*SN+GA 790 IFLO=0THENSYS985,AD,XAND7:RETURN 800 SYS995,AD,XAND7:RETURN 810 REM ---- LINIE ---- 820 IFABS(Y2-Y1)>ABS(X2-X1)THEN860 830 M=(Y2-Y1)/(X2-X1) 840 FORX=X1TOX2STEPSGN(X2-X1) 850 Y=INT(Y1+(X-X1)*M+.5):GOSUB760:NEXT:RETURN 860 M=(X2-X1)/(Y2-Y1) 870 FORY=Y1TOY2STEPSGN(Y2-Y1) 871 X=INT(X1+(Y-Y1)*M+.5):GOSUB760:NEXT:RETURN 875 REM ---- RECHTECK ---- 880 A=Y2:Y2=Y1:GOSUB820:Y2=A 890 A=X2:X2=X1:GOSUB820:X2=A 900 A=Y1:Y1=Y2:GOSUB820:Y1=A 910 A=X1:X1=X2:GOSUB820:X1=A:RETURN 920 REM ---- KREIS ---- 930 XE=INT(R/SQR(2)+.5) 940 FORKX=0TOXE:KY=INT(SQR(R*R-KX*KX)+.5) 950 GOSUB970:KX=-KX:GOSUB970:KY=-KY 960 GOSUB970:KX=-KX:GOSUB970:NEXT:RETURN 970 X=XM+KX:Y=YM+KY:GOSUB760 980 X=XM+KY:Y=YM+KX:GOTO760 990 REM ---- CURSOR SETZEN ---- 1000 ZZ=40*(YAND248)+(XAND504)+GA:RETURN 1010 XM=160:YM=100:R=50:GOSUB930 1020 GOSUB1000 1030 POKE56334,PEEK(56334)AND254 1040 POKE1,PEEK(1)AND251 1050 FORJ=1TOLEN(TX$) 1060 IFFA=1THENSYS912,(ZZ-GA)/8+VA,16*VF+HF 1070 PRINTCHR$(19)MID$(TX$,J,1); 1080 AD=PEEK(1024)*8+1024*GZ+53248 1090 FORI=0TO7:SYS912,ZZ+I,PEEK(AD+I) 1100 NEXT:ZZ=ZZ+8:NEXT 1110 POKE1,PEEK(1)OR4 1115 POKE56334,PEEK(56334)OR1:RETURN 1120 REM ==================== 1130 REM HAUPTPROGRAMM 1140 REM ==================== 1150 GOSUB530:GOSUB560:GOSUB430 1160 X=80:Y=8 1170 TX$="G R A F I K D E M O":GOSUB1020 1180 X=40:Y=32:TX$="DIE FARBE KANN GLOBAL FUER DEN":GOSUB1020 1190 Y=40:TX$="GESAMTEN BILDSCHIRM FESTGELEGT":GOSUB1020 1200 Y=48:TX$="WERDEN":GOSUB1020 1210 Y=64:X=40:TX$="HINTERGRUNDFARBE HF":GOSUB1020 1220 FORHF=15TO0STEP-1:GOSUB530:FORAA=0TO500:NEXT:NEXT:HF=0 1230 Y=72:TX$="VORDERGRUNDFARBE VF":GOSUB1020 1240 FORVF=0TO15:GOSUB530:FORAA=0TO500:NEXT:NEXT:VF=1:GOSUB530 1250 Y=88:TX$="ABER AUCH FUER EINZELNE ZEICHEN":GOSUB1020 1260 Y=96:TX$="GIBT ES EIGENE FARBEN, IM":GOSUB1020 1270 Y=104:TX$="GRAFIKMODUS GAR EINE EIGENE":GOSUB1020 1280 Y=112:TX$="HINTERGRUNDFARBE":GOSUB1020 1290 TX$="[209]":FA=1:X=32:Y=128:GOSUB1000 1300 FORHF=0TO15:VF=15-HF:GOSUB1030:ZZ=ZZ+8:NEXT 1310 Y=144:TX$="WEITER MIT TASTE":HF=0:VF=7:GOSUB1020:GOSUB9000 1320 VF=1:FA=0:GOSUB530:GOSUB560 1330 X=0:Y=8:TX$="SOEBEN SAHEN SIE SCHNELLES":GOSUB1020 1340 Y=16:TX$="BILDSCHIRMLOESCHEN":GOSUB1020 1350 Y=32:X=0:TX$="WAEHREND IM TEXTMODUS NUR JEWEILS EIN ":GOSUB1020 1360 TX$="EINZIGER ZEICHENSATZ AUF DEM BILDSCHIRM ":GOSUB1030 1370 TX$="VERWENDUNG FINDEN KANN, GIBT ES IM ":GOSUB1030 1380 TX$="GRAFIK-MODUS KEINERLEI EINSCHRAENKUNGEN.":GOSUB1030 1390 Y=80:TX$="GROSS/GRAFIK: ZXASQW/[218][216][193][211][209][215]":GOSUB1020 1400 Y=88:TX$="INVERS : ":GOSUB1020:TX$="ZXASQW/[218][216][193][211][209][215]":GZ=1:GOSUB1030 1410 GZ=0:Y=96:TX$="KLEIN/GROSS : ":GOSUB1020:TX$="ZXASQW/[218][216][193][211][209][215]":GZ=2:GOSUB1030 1420 GZ=0:Y=104:TX$="INVERS : ":GOSUB1020:TX$="ZXASQW/[218][216][193][211][209][215]":GZ=3:GOSUB1030 1430 GZ=2:VF=7:FA=1:Y=120:TX$="[215]EITER MIT [212]ASTE":GOSUB1020:GOSUB9000 1440 FA=0:VF=1:GOSUB530:GOSUB560 1450 Y=8:TX$="[197]INE [199]RAFIK BESTEHT NATUERLICH NICHT NUR":GOSUB1020 1460 TX$="AUS [194]UCHSTABEN. [197]S GIBT:":GOSUB1030 1470 X=16:Y=40:TX$="[208]UNKTE":GOSUB1020 1480 FORAA=0TO40 1490 X=INT(RND(1)*40):Y=INT(RND(2)*40) 1500 X=20+X:Y=68+Y:GOSUB760:NEXT 1510 X=96:Y=40:TX$="[204]INIEN":GOSUB1020 1520 X1=120:Y1=68:X2=X1:Y2=108:GOSUB820 1530 X1=100:X2=140:Y1=88:Y2=Y1:GOSUB820 1540 Y1=108:Y2=68:GOSUB820 1550 Y1=68:Y2=108:GOSUB820 1560 X=160:Y=40:TX$="[210]ECHTECKE":GOSUB1020 1570 X1=180:Y1=68:X2=220:Y2=108 1580 FORJ=1TO4:GOSUB880:X1=X1+5:Y1=Y1+5:X2=X2-5:Y2=Y2-5:NEXT 1590 X=260:Y=40:TX$="[203]REISE":GOSUB1020 1600 XM=280:YM=88:FORR=5TO20STEP5 1610 GOSUB930:NEXT 1620 FA=1:VF=7:X=20:Y=150:TX$="[215]EITER MIT [212]ASTE":GOSUB1020 1630 GOSUB9000:VF=1:FA=0:GOSUB530:GOSUB560 1640 X=0:Y=8:TX$="[205]IT DER [208]UNKT-[198]UNKTION LASSEN SICH AUCH ":GOSUB1020 1650 TX$="BELIEBIGE [198]IGUREN ERZEUGEN.":GOSUB1030 1660 X=100:Y=32:TX$="[211]INUSFUNKTION":GOSUB1020 1670 X1=2:Y1=60:X2=2:Y2=160:GOSUB820 1680 Y=110:AD=39*(YAND248)+Y+GA 1690 FORI=ADTOAD+312STEP8 1700 SYS912,I,255:NEXT 1710 FORKX=0TO315:KY=SIN(KX/50) 1720 X=2+KX:Y=110-INT(50*KY+.5):GOSUB760:NEXT 1730 X=0:Y=180:TX$="[215]EITER MIT [212]ASTE":GOSUB1020:GOSUB9000:VF=0 1731 GOSUB1740:GOTO1830 1735 REM ---- ABBLENDUNG ---- 1740 A=16*VF+HF:LO=VA:LU=VA+24*40 1750 RO=VA+39:RU=LU+39 1760 FORJ=1TO12:FORI=LOTORO:SYS912,I,A 1770 NEXT:FORI=RO+40TORUSTEP40:SYS912,I,A 1780 NEXT:FORI=RU-1TOLUSTEP-1:SYS912,I,A 1790 NEXT:FORI=LU-40TOLO+40STEP-40:SYS912,I,A 1800 NEXT:LO=LO+41:RO=RO+39:LU=LU-39 1810 RU=RU-41:NEXT 1820 FORI=LOTORO:SYS912,I,A:NEXT:RETURN 1821 REM -------------------- 1830 TX$=" ":GOSUB1020 1831 PRINTCHR$(147)"":GOSUB480:PRINTCHR$(14); 1835 PRINTCHR$(147)"":GOSUB480:PRINTCHR$(14); 1840 PRINT"[193]UF- UND [193]BBLENDUNGEN SIND MOEGLICH":PRINT:PRINT"[215]EITER MIT [212]ASTE" 1850 GOSUB9000:GOSUB430:VF=1 1851 GOSUB1860:GOTO1950 1855 REM ---- AUFBLENDUNG ---- 1860 A=16*VF+HF:LO=VA+12*41:LU=LO 1870 RO=VA+13*39:RU=RO 1880 FORI=ROTOLOSTEP-1:SYS912,I,A:NEXT 1890 FORJ=1TO12:LO=LO-41:RO=RO-39 1900 LU=LU+39:RU=RU+41 1910 FORI=LO+1TORO:SYS912,I,A:NEXT 1920 FORI=RO+40TORUSTEP40:SYS912,I,A:NEXT 1930 FORI=RU-1TOLUSTEP-1:SYS912,I,A:NEXT 1940 FORI=LU-40TOLOSTEP-40:SYS912,I,A:NEXT:NEXT:RETURN 1945 REM --------------------- 1950 VB=1:GOSUB180:POKE56,VH:CLR 1960 VB=1:GB=8:VR=7:GOSUB180 1970 VF=0:GOSUB530 1980 FI$="HIRES-BILD 1":GOSUB590 1990 VB=3:GOSUB180:GOSUB1740 2000 VB=1:GOSUB180:VF=1 2010 GOSUB430:GOSUB1860 2020 VB=3:GOSUB180:VF=0:GOSUB530 2030 FI$="HIRES-BILD 2":GOSUB590 2031 VB=1:GOSUB180:GOSUB1740 2040 VB=3:GOSUB180:GOSUB430 2050 VF=1:HF=0:GOSUB1860 2060 X=0:Y=199:TX$="[215]EITER MIT [212]ASTE":GZ=2:GOSUB1020:GOSUB9000 2070 PRINTCHR$(147)"";:GOSUB480 2080 PRINTCHR$(14)"[196]URCH [215]ECHSELN DER [199]RAFIKBEREICHE" 2090 PRINT"KANN EINE RICHTIGE [194]ILDERSHOW" 2100 PRINT"AUFGEBAUT WERDEN." 2110 END 9000 GETA$:IFA$=""THEN9000 9001 RETURN